home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
djgpp
/
utils
/
install
/
query.h
< prev
next >
Wrap
Text File
|
1993-11-21
|
2KB
|
84 lines
void query(char *prompt, char *buffer, char *def)
{
int bptr, blen, k, i;
fputs(prompt, stdout);
ansi("\033[1m");
strcpy(buffer, def);
bptr = blen = strlen(buffer);
fputs(buffer, stdout);
while (1)
{
k = getch();
if (k == 0)
k = 0x100 | getch();
switch (k)
{
case 3:
printf("%s<Ctrl-C>\n", ansinorm);
exit(1);
case 10:
case 13:
buffer[blen] = 0;
putchar('\n');
ansi("\033[0m");
return;
case 8:
if (bptr)
{
putchar(8);
putchar(' ');
putchar(8);
bptr--;
blen--;
for (i=bptr; i<blen; i++)
buffer[i] = buffer[i+1];
}
else
putchar(7);
break;
case 27: /* Escape */
case 21: /* ^U */
while (bptr < blen)
putchar(buffer[bptr++]);
while (bptr)
{
putchar(8);
putchar(' ');
putchar(8);
bptr--;
}
blen = 0;
break;
case 'K'|0x100: /* left */
if (bptr)
{
putchar(8);
bptr--;
}
else
putchar(7);
break;
case 'M'|0x100: /* right */
if (bptr < blen)
{
putchar(buffer[bptr]);
bptr++;
}
else
putchar(7);
break;
default:
for (i=blen; i>bptr; i--)
buffer[i] = buffer[i-1];
buffer[bptr++] = k;
blen++;
for (i=bptr-1; i<blen; i++)
putchar(buffer[i]);
for (; i>bptr; i--)
putchar(8);
}
}
}